package com.icinfo.cloud.provider.punish.csource.manage.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.AppendixDto;
import com.icinfo.cloud.provider.punish.ucase.caseregister.dto.*;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 【V1.4.0】描述：外部应用立案登记保存dto
 *
 * @author zhengqiang
 * @description
 * @date 2022/8/15
 */
@Data
public class CaseRegisterOfAppSaveDto {
    /**
     * 请求时间戳
     */
    @NotEmpty(message = "请求时间戳不能为空")
    private String requestTime;

    /**
     * 数据来源应用id
     */
    @NotEmpty(message = "数据来源应用id不能为空")
    private String caseSourceAppId;

    /**
     * 安全码
     */
    @NotEmpty(message = "安全码不能为空")
    private String security;

    /**
     * 案源登记id
     */
    @NotEmpty(message = "案源登记id不能为空")
    private String caseSourceRegisterId;

    /**
     * 案件名称
     */
    @NotEmpty(message = "案件名称不能为空")
    private String caseName;

    /**
     * 案件来源编码
     **/
    @NotEmpty(message = "案件来源编码不能为空")
    private String caseSourceId;

    /**
     * 案件简要情况
     **/
    @NotEmpty(message = "案件简要情况不能为空")
    private String caseConciseCondition;

    /**
     * 案发时间
     **/
    @NotNull(message = "案发时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private String caseHappenTime;

    /**
     * 案发地详细地址(省市县后的地址)
     **/
    private String caseHappenAddressDetail;

    /**
     * 案发地区域编码
     **/
    //@NotEmpty(message = "案发地区域编码不能为空")
    private String caseHappenAddressAreaCode;

    /**
     * 案发地区区域名称（中文数组）
     */
    //@NotEmpty(message = "案发地区区域名称不能为空")
    private String[] caseHappenAddressAreaNames;

    /**
     * 办案人员列表
     */
    @NotNull(message = "办案人员不能为空")
    @Valid
    private List<CaseHandlePersonInfoDto> handlePersonInfoList;
    /**
     * 案件当事人个人信息列表
     */
    private List<CaseRegisterPartiesPersonInfoDto> partiesPersonInfoList;
    /**
     * 案件当事人法人信息列表
     */
    private List<CaseRegisterPartiesLegalInfoDto> partiesLegalInfoList;

    /**
     * 案由列表信息
     */
    private List<CaseReasonInfoOfAppDto> caseReasonInfoList;

    /**
     * 附件信息列表
     **/
    private List<AppendixDto> appendixList;

    /**
     * 证据材料
     */
    private List<CaseSourceEvidenceDto> evidenceList;
    /**
     * 外部行政行为码
     */
    private String caseExternalActsCode;

    /**
     * 检查任务id
     */
    private String checkTaskId;
    /**
     * 检查任务编号
     */
    private String checkTaskNumber;
    /**
     * 检查任务名称
     */
    private String checkTaskName;

}
